/* Classe PacienteData
 * Implementação feita por Jonas Lucchesi seguindo Diagrama ER v3
 * Data: 27/10/2012
 * Atualização: Incluir Senha - 27/10/2012
 */


package data;

import java.sql.*;
import java.util.*;
import utils.Transacao;

public class PacienteData {

  public void incluir(PacienteDO paciente, Transacao tr) throws Exception {
     Connection con = tr.obterConexao();
     String sql = "insert into Paciente (nome, idade, endereco, telefone, sexo) values (?, ?, ?, ?, ?)";
     PreparedStatement ps = con.prepareStatement(sql);
     ps.setString(1, paciente.getNome());
     ps.setInt(2, Integer.parseInt(paciente.getIdade()));
     ps.setString(3, paciente.getEndereco());
     ps.setInt(4, Integer.parseInt(paciente.getTelefone()));
     ps.setString(5, paciente.getSexo());
     int result = ps.executeUpdate();
  }

  public void excluir(PacienteDO paciente, Transacao tr) throws Exception {
     excluir(paciente.getIdPaciente(), tr);
  } // excluir

  public void excluir (int idobj, Transacao tr) throws Exception {
  } // excluir 

  public void atualizar(PacienteDO paciente, Transacao tr) throws Exception {
     Connection con = tr.obterConexao();
     String sql = "update Paciente set Nome=?, Idade=?, Endereco=?, Telefone=? where idPaciente=?";
     PreparedStatement ps = con.prepareStatement(sql);
     ps.setString(1, paciente.getNome());
     ps.setInt(2, Integer.parseInt(paciente.getIdade()));
     ps.setString(3, paciente.getEndereco());
     ps.setInt(4, Integer.parseInt(paciente.getTelefone()));
     ps.setInt(5, paciente.getIdPaciente());
     int result = ps.executeUpdate();
  } // atualizar

  public PacienteDO buscar(int idobj, Transacao tr) throws Exception {
     System.out.println("Entrou no buscar do PacienteData");
     Connection con = tr.obterConexao();
     String sql = "SELECT * FROM mydb.paciente where  idPaciente = ?";
     PreparedStatement ps = con.prepareStatement(sql);
     ps.setInt(1, idobj);
     System.out.println("Preparou o Statement");
     ResultSet rs = ps.executeQuery();
     System.out.println("Executou a Query");
     rs.next();
     PacienteDO paciente = new PacienteDO();
     paciente.setIdPaciente (rs.getInt("idPaciente"));
     paciente.setNome (rs.getString("nome"));
     paciente.setIdade (rs.getString("idade"));
     paciente.setCPF (rs.getString("cpf"));
     paciente.setEndereco (rs.getString("endereco"));
     paciente.setStatus (rs.getString("status"));
     paciente.setTelefone(rs.getString("telefone"));
     paciente.setSexo (rs.getString("sexo"));
     // nome, idade, cpf, endereco, status, telefone, sexo
     return paciente;
  } // buscar

  public Vector pesquisarPorNome(String nome, Transacao tr) throws Exception {
     Connection con = tr.obterConexao();
     String sql = "select * from Paciente where nome like ?";
     PreparedStatement ps = con.prepareStatement(sql);
     ps.setString(1, nome);
     ResultSet rs = ps.executeQuery();
     System.out.println("query executada");
     Vector pacientes = new Vector();
     while (rs.next()) {
        PacienteDO p = new PacienteDO();
        p.setIdPaciente (rs.getInt("idPaciente"));
        p.setNome (rs.getString("nome"));
        System.out.println(" got " + p.getNome());
        p.setTelefone(rs.getString("telefone"));
        p.setIdade (rs.getString("idade"));
        p.setCPF (rs.getString("cpf"));
        p.setEndereco (rs.getString("endereco"));
        p.setStatus (rs.getString("status"));
        p.setSexo (rs.getString("sexo"));
        pacientes.add(p);
     }
     return pacientes;
  } // pesquisarPorNome

} // PacienteData